## Normalized Hamming matrix of condimension $r$ over a finite field $F$

from PyM import *

def normalized_hamming_matrix(r,F=Zn(2)):
    q = cardinal(F); n = (q**r-1)//(q-1)
    K = [element(j,F) for j in range(q)]
    B = [(r-1)*[K[0]]+[K[1]]]
    H = B
    for j in range(1,r):
        S = []
        for b in B:
            s = []
            b = b[1:]
            for t in K:
                s = s+[b+[t]]
            S = S+s
        B=S
        H = H+S
    return transpose(matrix(H))


show(normalized_hamming_matrix(3))

show(normalized_hamming_matrix(4))

show(normalized_hamming_matrix(3,Zn(3)))